package com.fpx.order.plat.common.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

public class DateFormatUtils {
	public static final String DEFAULTPATTERN = "yyyy-MM-dd HH:mm:ss";

	/**
	 * 验证指定格式的时间是否相同,默认返回不相同
	 * @createtime 2015年4月30日 下午2:45:43
	 * @author jonsen
	 */
	public static boolean isSameDay(Date dateOne,Date dateTwo,String pattern) throws Exception{
		if(dateOne==null||dateTwo==null||pattern==null){
			throw new RuntimeException("参数异常");
		}
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		String strOne = format.format(dateOne);
		String strTwo = format.format(dateTwo);
		if(strOne.equals(strTwo)){
			return true;
		}
		return false;
	}
	
	/**
	 * 字符串转日期
	 * @createtime 2015年3月26日 下午3:11:56
	 * @author jonsen
	 * @throws ParseException 
	 */
	public static Date stringToDate(String dateStr,String pattern) throws ParseException{
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.parse(dateStr);
	}
	/**
	 * 日期转字符串
	 * @createtime 2015年3月26日 下午3:11:56
	 * @author jonsen
	 * @throws ParseException 
	 */
	public static String dateToString(Date date,String pattern) throws ParseException{
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.format(date);
	}
	/**
	 * 字符串转日期,格式：yyyy-MM-dd HH:mm:ss
	 * @createtime 2015年3月26日 下午3:11:56
	 * @author jonsen
	 * @throws ParseException 
	 */
	public static Date defaultStringToDate(String strDate) throws ParseException{
		return stringToDate(strDate,DEFAULTPATTERN);
	}

	/**
	 * 获取系统当前日期
	 * @createtime 2015年3月26日 下午3:11:56
	 * @author jonsen
	 * @throws ParseException 
	 */
	public static String getSysDateTime(String pattern) throws ParseException{
		SimpleDateFormat format = new SimpleDateFormat(pattern);
		return format.format(new Date());
	}
	/**
	 * 获取当前系统时间
	 * @createtime 2015年4月10日 下午3:55:50
	 * @author jonsen
	 */
    public static Date getSysDateTime(){
        return Calendar.getInstance().getTime();
    }
	/**
	 * 获取当前系统时间指定分钟后的时间
	 * @param 分钟： 添加分钟数
	 * @createtime 2015年4月10日 下午3:55:50
	 * @author jonsen
	 */
    public static Date getCalendarDateTime(int minute){
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MINUTE, -minute);    //得到前一天
        Date date = calendar.getTime();
        return date;
    }
    /**
	 * 获取当前系统时间指定分钟后的时间
	 * @param 分钟： 添加分钟数
	 * @createtime 2015年4月10日 下午3:55:50
	 * @author jonsen
	 */
    public static String getCalendarDateTimeStr(int minute,String pattern){
    	Date date = getCalendarDateTime(minute);
        try {
			return dateToString(date,pattern);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
    }
    /**
     * 获取指定时间移动指定分钟后的时间
     * @param pattern 时间格式
     * @param dateStr 指定时间字符串
     * @param minute  指定移动的分钟数
     * @return 指定时间 + 移动分钟数
     * @throws ParseException
     */
    public static Date getMoveAfterDate(String pattern,String dateStr,int minute) throws ParseException{
    	Date date = stringToDate(dateStr,pattern);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MINUTE, minute);
        return calendar.getTime();
    }
    
    
    /**
	 * 按格式化串比较两个日期,要求格式化串必须按年月日时分秒顺序
	 * 
	 * 格式化后,日期相同返还0,第一个日期小于第二个日期返回-1,第一个日期大于第二个日期返回1
	 * @param cal1
	 * @param cal2
	 * @param formatStr
	 * @return
	 */
	public static int compare(Calendar cal1, Calendar cal2, String formatStr) {
		SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
		String date1 = sdf.format(cal1.getTime());
		String date2 = sdf.format(cal2.getTime());
		return date1.compareTo(date2);
	}
	
	/**
	 * 将字符串时间，格式化成Calendar类型
	 * 
	 * @param timestamp  日期
	 * @param formatString 格式化串
	 * @return
	 * @throws ParseException
	 */
	public static Calendar parseTimestamp(String timestamp, String formatString) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat(formatString, Locale.CHINA);
		Date date = sdf.parse(timestamp);
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar;
	}
    
	public static String longStrToDateTime(String logstrDate)throws ParseException{
	   	final String time = logstrDate.substring(0,logstrDate.length()-5);
	    Date date = new Date(Long.parseLong(time));
	    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  		return format.format(date);
	}
}
